home *** CD-ROM | disk | FTP | other *** search
- //: C23:Catchref.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Why catch by reference?
- #include <iostream>
- using namespace std;
-
- class Base {
- public:
- virtual void what() {
- cout << "Base" << endl;
- }
- };
-
- class Derived : public Base {
- public:
- void what() {
- cout << "Derived" << endl;
- }
- };
-
- void f() { throw Derived(); }
-
- int main() {
- try {
- f();
- } catch(Base b) {
- b.what();
- }
- try {
- f();
- } catch(Base& b) {
- b.what();
- }
- } ///:~
-